home *** CD-ROM | disk | FTP | other *** search
/ Tech Win 1995 November / CD [TECH_B].bin / tech_b / delphi / trial / disk4 / doc.pak / FILECTRL.INT < prev    next >
Encoding:
Text File  |  1995-08-08  |  7.9 KB  |  282 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {       Delphi Visual Component Library                 }
  4. {                                                       }
  5. {       Copyright (c) 1995 Borland International        }
  6. {                                                       }
  7. {*******************************************************}
  8.  
  9. unit FileCtrl;
  10.  
  11. interface
  12.  
  13. uses SysUtils, WinTypes, Messages, Classes, Controls, Graphics, Forms,
  14.   Menus, StdCtrls, Buttons;
  15.  
  16. type
  17.   TFileAttr = (ftReadOnly, ftHidden, ftSystem, ftVolumeID, ftDirectory,
  18.     ftArchive, ftNormal);
  19.   TFileType = set of TFileAttr;
  20.  
  21.   TDriveType = (dtUnknown, dtNoDrive, dtFloppy, dtFixed, dtNetwork, dtCDROM,
  22.     dtRAM);
  23.  
  24.   TDirectoryListBox = class;
  25.   TFilterComboBox = class;
  26.   TDriveComboBox = class;
  27.  
  28. { TFileListBox }
  29.  
  30.   TFileListBox = class(TCustomListBox)
  31.   protected
  32.     FDirectory: string;
  33.     FMask: PChar;
  34.     FFileType: TFileType;
  35.     FFileEdit: TEdit;
  36.     FDirList: TDirectoryListBox;
  37.     FFilterCombo: TFilterComboBox;
  38.     FShowGlyphs: Boolean;
  39.     ExeBMP, DirBMP, UnknownBMP: TBitmap;
  40.     FOnChange: TNotifyEvent;
  41.     FLastSel: Integer;
  42.     procedure CreateWnd; override;
  43.     procedure ReadBitmaps; virtual;
  44.     procedure Click; override;
  45.     procedure Change; virtual;
  46.     procedure ReadFileNames; virtual;
  47.     procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState);  override;
  48.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  49.     function GetFilePath: string; virtual;
  50.   public
  51.     constructor Create(AOwner: TComponent); override;
  52.     destructor Destroy; override;
  53.     procedure Update;
  54.     procedure ApplyFilePath (const EditText: string); virtual;
  55.     property Drive: char;
  56.     property Directory: string;
  57.     property FileName: String;
  58.   published
  59.     property Align;
  60.     property Color;
  61.     property Ctl3D;
  62.     property DragCursor;
  63.     property DragMode;
  64.     property Enabled;
  65.     property FileEdit: TEdit;
  66.     property FileType: TFileType default [ftNormal];
  67.     property Font;
  68.     property IntegralHeight;
  69.     property ItemHeight;
  70.     property Mask: string;
  71.     property MultiSelect;
  72.     property ParentColor;
  73.     property ParentCtl3D;
  74.     property ParentFont;
  75.     property ParentShowHint;
  76.     property PopupMenu;
  77.     property ShowGlyphs: Boolean default False;
  78.     property ShowHint;
  79.     property TabOrder;
  80.     property TabStop;
  81.     property Visible;
  82.     property OnChange: TNotifyEvent;
  83.     property OnClick;
  84.     property OnDblClick;
  85.     property OnDragDrop;
  86.     property OnDragOver;
  87.     property OnEndDrag;
  88.     property OnEnter;
  89.     property OnExit;
  90.     property OnKeyDown;
  91.     property OnKeyPress;
  92.     property OnKeyUp;
  93.     property OnMouseDown;
  94.     property OnMouseMove;
  95.     property OnMouseUp;
  96.   end;
  97.  
  98. { TDirectoryListBox }
  99.  
  100.   TFolderBitmap = class(TBitmap)
  101.   public
  102.     constructor Create;
  103.   end;
  104.  
  105.   TDirectoryListBox = class(TCustomListBox)
  106.   protected
  107.     ClosedBMP, OpenedBMP, CurrentBMP: TFolderBitmap;
  108.     FDirectory: string;
  109.     FOnChange: TNotifyEvent;
  110.     procedure Change; virtual;
  111.     procedure DblClick; override;
  112.     procedure ReadBitmaps; virtual;
  113.     procedure CreateWnd; override;
  114.     procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override;
  115.     procedure BuildList; virtual;
  116.     procedure KeyPress(var Key: Char); override;
  117.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  118.   public
  119.     constructor Create(AOwner: TComponent); override;
  120.     destructor Destroy; override;
  121.     function GetItemPath(Index: Integer): string;
  122.     procedure OpenCurrent;
  123.     procedure Update;
  124.     property Drive: Char;
  125.     property Directory: string;
  126.   published
  127.     property Align;
  128.     property Color;
  129.     property Columns;
  130.     property Ctl3D;
  131.     property DirLabel: TLabel;
  132.     property DragCursor;
  133.     property DragMode;
  134.     property Enabled;
  135.     property FileList: TFileListBox;
  136.     property Font;
  137.     property IntegralHeight;
  138.     property ItemHeight;
  139.     property ParentColor;
  140.     property ParentCtl3D;
  141.     property ParentFont;
  142.     property ParentShowHint;
  143.     property PopupMenu;
  144.     property ShowHint;
  145.     property TabOrder;
  146.     property TabStop;
  147.     property Visible;
  148.     property OnChange: TNotifyEvent;
  149.     property OnClick;
  150.     property OnDblClick;
  151.     property OnDragDrop;
  152.     property OnDragOver;
  153.     property OnEndDrag;
  154.     property OnEnter;
  155.     property OnExit;
  156.     property OnKeyDown;
  157.     property OnKeyPress;
  158.     property OnKeyUp;
  159.     property OnMouseDown;
  160.     property OnMouseMove;
  161.     property OnMouseUp;
  162.   end;
  163.  
  164. { TDriveComboBox }
  165.  
  166.   TTextCase = (tcLowerCase, tcUpperCase);
  167.  
  168.   TDriveComboBox = class(TCustomComboBox)
  169.   protected
  170.     FloppyBMP, FixedBMP, NetworkBMP, CDROMBMP, RAMBMP: TBitmap;
  171.     FOnChange: TNotifyEvent;
  172.     procedure CreateWnd; override;
  173.     procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override;
  174.     procedure Click; override;
  175.     procedure BuildList; virtual;
  176.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  177.     procedure Change; dynamic;
  178.   public
  179.     constructor Create(AOwner: TComponent); override;
  180.     destructor Destroy; override;
  181.     property Text;
  182.     property Drive: Char;
  183.   published
  184.     property Color;
  185.     property Ctl3D;
  186.     property DirList: TDirectoryListBox;
  187.     property DragMode;
  188.     property DragCursor;
  189.     property Enabled;
  190.     property Font;
  191.     property ImeMode;
  192.     property ParentColor;
  193.     property ParentCtl3D;
  194.     property ParentFont;
  195.     property ParentShowHint;
  196.     property PopupMenu;
  197.     property ShowHint;
  198.     property TabOrder;
  199.     property TabStop;
  200.     property TextCase: TTextCase default tcLowerCase;
  201.     property Visible;
  202.     property OnChange: TNotifyEvent;
  203.     property OnClick;
  204.     property OnDblClick;
  205.     property OnDragDrop;
  206.     property OnDragOver;
  207.     property OnDropDown;
  208.     property OnEndDrag;
  209.     property OnEnter;
  210.     property OnExit;
  211.     property OnKeyDown;
  212.     property OnKeyPress;
  213.     property OnKeyUp;
  214.   end;
  215.  
  216. { TFilterComboBox }
  217.  
  218.   TFilterComboBox = class(TCustomComboBox)
  219.   protected
  220.     FOnChange: TNotifyEvent;
  221.     procedure CreateWnd; override;
  222.     procedure Click; override;
  223.     procedure BuildList;
  224.     procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  225.     procedure Change; dynamic;
  226.   public
  227.     constructor Create(AOwner: TComponent); override;
  228.     destructor Destroy; override;
  229.     property Mask: string;
  230.     property Text;
  231.   published
  232.     property Color;
  233.     property Ctl3D;
  234.     property DragMode;
  235.     property DragCursor;
  236.     property Enabled;
  237.     property FileList: TFileListBox;
  238.     property Filter: string;
  239.     property Font;
  240.     property ImeMode;
  241.     property ParentColor;
  242.     property ParentCtl3D;
  243.     property ParentFont;
  244.     property ParentShowHint;
  245.     property ShowHint;
  246.     property TabOrder;
  247.     property TabStop;
  248.     property Visible;
  249.     property OnChange: TNotifyEvent;
  250.     property OnClick;
  251.     property OnDblClick;
  252.     property OnDragDrop;
  253.     property OnDragOver;
  254.     property OnDropDown;
  255.     property OnEndDrag;
  256.     property OnEnter;
  257.     property OnExit;
  258.     property OnKeyDown;
  259.     property OnKeyPress;
  260.     property OnKeyUp;
  261.   end;
  262.  
  263. procedure ProcessPath (const EditText: string; var Drive: Char;
  264.   var DirPart: string; var FilePart: string);
  265.  
  266. function MinimizeName(const Filename: TFileName; Canvas: TCanvas;
  267.   MaxLen: Integer): TFileName;
  268.  
  269. const
  270.   WNTYPE_DRIVE = 1;  { from WINNET.H, WFW 3.1 SDK }
  271.  
  272. type
  273.   TSelectDirOpt = (sdAllowCreate, sdPerformCreate, sdPrompt);
  274.   TSelectDirOpts = set of TSelectDirOpt;
  275.  
  276. function SelectDirectory(var Directory: string;
  277.   Options: TSelectDirOpts; HelpCtx: Longint): Boolean;
  278. function DirectoryExists(Name: string): Boolean;
  279. procedure ForceDirectories(Dir: string);
  280.  
  281. implementation
  282.